package com.deli.springboot.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

public class JsonUtils {

    /**
     * 将String数据转换为对象
     */
    private static Object StrToJson(String jsonString) {
        return JSON.parseObject(jsonString);
    }

    /**
     * 将Json文本数据转换为JavaBean数据！
     * 需要注意的是：这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样！键中没有的在这个JavaBean中就显示为null！
     */
    private static Object jsonToObj(String jsonString, Object object) {
        //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象！
        return JSON.parseObject(jsonString, object.getClass());//Weibo类在下边定义
    }


    /**
     * 将Map类型的数据转换为JsonString
     */
    private static String mapToJson(Map<Object, Object> map) {
        return JSON.toJSONString(map);
    }

    /**
     * Object到Json
     */
    private static String objToStr(Object object) {
        return JSON.toJSONString(object);
    }

    /**
     * String数据转成List
     */
    private static List<Object> strToList(String jsonString, Class<Object> object) {
        return JSON.parseArray(jsonString, object);

    }

    /**
     * 将JavaBean转换为JSON对象
     */
    private static JSONObject beanToObject(Object object) {
        return (JSONObject) JSON.toJSON(object);
    }

    /**
     * 将JSON文本转换为JavaBean的集合；
     * 内部实现肯定是：首先转换为JSONArray，然后再转换为List集合
     */
    private static List<Object> json2JavaBeanM4(String jsonString, Object[] object) {
        return JSON.parseArray(jsonString, (Type[]) object);
    }

    /**
     * 将json数据转化为JSONArray:
     * 注意：获取到JSONArray之后（我们这里只是获取到JSONArray而不是JavaBean的List集合）
     * 获取JSONArray中的数据转换为String类型需要在外边加"";
     */
    private static Object json2JSONArrayM3(String jsonString) {
        //将JSON文本转换为JSONArray
        return JSON.parseArray(jsonString);
    }

    /**
     * 将JavaBean转换为Json格式的数据/Json文本
     * 用户数据的传递：例如上传服务器
     */
    private static String bean2JsonM5(Object object) {
        return JSON.toJSONString(object);
    }
}